#ifndef _MEMCACHE_PROXY_H_
#define _MEMCACHE_PROXY_H_

#include <string>
#include <libmemcached/memcached.hpp>

using namespace std;
using namespace memcache;

class MemcacheProxy
{
private:
	Memcache *_p_memcache;
	Memcache *_p_db_memcache;
	
public:
	void Init();
	void Exit();
	
	int SetDbValue(string &key, string &value, int live_seconds = 1800);
	int SetMemValue(string &key, string &value);
	int GetDbValue(string &key, string &value);
	int GetMemValue(string &key, string &value);
	int RemoveDbValue(string &key);
	int RemoveMemValue(string &key);
	int AppendDbValue(string &key, string &value);
	int AppendMemValue(string &key, string &value);

private:
	int SetValue(Memcache *p_cache, string &key, string &value, int live_seconds);
	int GetValue(Memcache *p_cache, string &key, string &value);
	int RemoveValue(Memcache *p_cache, string &key);
	int AppendValue(Memcache *p_cache, string &key, string &value);
};

#endif
